package vf2.rn;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;

public class VF2_RN_BatalhaTest {
	private static List<VF2_RN_Jogador> list = new ArrayList<VF2_RN_Jogador>();

	@Before
	public void setUp() throws Exception {

		VF2_RN_Jogador jogador1 = new VF2_RN_Jogador();
		VF2_RN_Jogador jogador2 = new VF2_RN_Jogador();
		VF2_RN_Jogador jogador3 = new VF2_RN_Jogador();
		VF2_RN_Jogador jogador4 = new VF2_RN_Jogador();
		
		jogador1.setNome("Player 1");
		jogador2.setNome("Player 2");
		jogador3.setNome("Player 3");
		jogador4.setNome("Player 4");
				
		jogador1.setIp("192.168.100.101");
		jogador2.setIp("192.168.100.102");
		jogador3.setIp("192.168.100.103");
		jogador4.setIp("192.168.100.104");
		
		list.add(jogador1);
		list.add(jogador2);
		list.add(jogador3);
		list.add(jogador4);
	}

	@Test
	public void testZeroJogadoresVivos() {
		VF2_RN_Batalha batalha = new VF2_RN_Batalha();
		final int morto=0;
		final int vivo=10;
		final int expected=0;
		
		batalha.setJogador1( list.get(0) );
		batalha.setJogador2( list.get(1) );
		batalha.setJogador3( list.get(2) );
		batalha.setJogador4( list.get(3) );

		batalha.getJogador1().getGuerreira().setPv(morto);
		batalha.getJogador1().getBarbara().setPv(morto);
		batalha.getJogador1().getNinja().setPv(morto);

		batalha.getJogador2().getGuerreira().setPv(morto);
		batalha.getJogador2().getBarbara().setPv(morto);
		batalha.getJogador2().getNinja().setPv(morto);

		batalha.getJogador3().getGuerreira().setPv(morto);
		batalha.getJogador3().getBarbara().setPv(morto);
		batalha.getJogador3().getNinja().setPv(morto);
		
		batalha.getJogador4().getGuerreira().setPv(morto);
		batalha.getJogador4().getBarbara().setPv(morto);
		batalha.getJogador4().getNinja().setPv(morto);

		batalha.jogadoresVivos();
		assertEquals(expected, batalha.jogadoresVivos());
	}
	
	@Test
	public void testUmJogadoresVivos() {
		VF2_RN_Batalha batalha = new VF2_RN_Batalha();
		final int morto=0;
		final int vivo=10;
		final int expected=1;
		
		batalha.setJogador1( list.get(0) );
		batalha.setJogador2( list.get(1) );
		batalha.setJogador3( list.get(2) );
		batalha.setJogador4( list.get(3) );

		batalha.getJogador1().getGuerreira().setPv(vivo);
		batalha.getJogador1().getBarbara().setPv(morto);
		batalha.getJogador1().getNinja().setPv(morto);

		batalha.getJogador2().getGuerreira().setPv(morto);
		batalha.getJogador2().getBarbara().setPv(morto);
		batalha.getJogador2().getNinja().setPv(morto);

		batalha.getJogador3().getGuerreira().setPv(morto);
		batalha.getJogador3().getBarbara().setPv(morto);
		batalha.getJogador3().getNinja().setPv(morto);
		
		batalha.getJogador4().getGuerreira().setPv(morto);
		batalha.getJogador4().getBarbara().setPv(morto);
		batalha.getJogador4().getNinja().setPv(morto);

		batalha.jogadoresVivos();
		assertEquals(expected, batalha.jogadoresVivos());
	}

	@Test
	public void testDoisJogadoresVivos() {
		VF2_RN_Batalha batalha = new VF2_RN_Batalha();
		final int morto=0;
		final int vivo=10;
		final int expected=2;
		
		batalha.setJogador1( list.get(0) );
		batalha.setJogador2( list.get(1) );
		batalha.setJogador3( list.get(2) );
		batalha.setJogador4( list.get(3) );

		batalha.getJogador1().getGuerreira().setPv(vivo);
		batalha.getJogador1().getBarbara().setPv(morto);
		batalha.getJogador1().getNinja().setPv(morto);

		batalha.getJogador2().getGuerreira().setPv(vivo);
		batalha.getJogador2().getBarbara().setPv(morto);
		batalha.getJogador2().getNinja().setPv(morto);

		batalha.getJogador3().getGuerreira().setPv(morto);
		batalha.getJogador3().getBarbara().setPv(morto);
		batalha.getJogador3().getNinja().setPv(morto);
		
		batalha.getJogador4().getGuerreira().setPv(morto);
		batalha.getJogador4().getBarbara().setPv(morto);
		batalha.getJogador4().getNinja().setPv(morto);

		batalha.jogadoresVivos();
		assertEquals(expected, batalha.jogadoresVivos());
	}

	@Test
	public void testTresJogadoresVivos() {
		VF2_RN_Batalha batalha = new VF2_RN_Batalha();
		final int morto=0;
		final int vivo=10;
		final int expected=3;
		
		batalha.setJogador1( list.get(0) );
		batalha.setJogador2( list.get(1) );
		batalha.setJogador3( list.get(2) );
		batalha.setJogador4( list.get(3) );

		batalha.getJogador1().getGuerreira().setPv(vivo);
		batalha.getJogador1().getBarbara().setPv(morto);
		batalha.getJogador1().getNinja().setPv(morto);

		batalha.getJogador2().getGuerreira().setPv(vivo);
		batalha.getJogador2().getBarbara().setPv(morto);
		batalha.getJogador2().getNinja().setPv(morto);

		batalha.getJogador3().getGuerreira().setPv(vivo);
		batalha.getJogador3().getBarbara().setPv(morto);
		batalha.getJogador3().getNinja().setPv(morto);
		
		batalha.getJogador4().getGuerreira().setPv(morto);
		batalha.getJogador4().getBarbara().setPv(morto);
		batalha.getJogador4().getNinja().setPv(morto);

		batalha.jogadoresVivos();
		assertEquals(expected, batalha.jogadoresVivos());
	}

	@Test
	public void testQuatroJogadoresVivos() {
		VF2_RN_Batalha batalha = new VF2_RN_Batalha();
		final int morto=0;
		final int vivo=10;
		final int expected=4;
		
		batalha.setJogador1( list.get(0) );
		batalha.setJogador2( list.get(1) );
		batalha.setJogador3( list.get(2) );
		batalha.setJogador4( list.get(3) );

		batalha.getJogador1().getGuerreira().setPv(vivo);
		batalha.getJogador1().getBarbara().setPv(morto);
		batalha.getJogador1().getNinja().setPv(morto);

		batalha.getJogador2().getGuerreira().setPv(vivo);
		batalha.getJogador2().getBarbara().setPv(morto);
		batalha.getJogador2().getNinja().setPv(morto);

		batalha.getJogador3().getGuerreira().setPv(vivo);
		batalha.getJogador3().getBarbara().setPv(morto);
		batalha.getJogador3().getNinja().setPv(morto);
		
		batalha.getJogador4().getGuerreira().setPv(vivo);
		batalha.getJogador4().getBarbara().setPv(morto);
		batalha.getJogador4().getNinja().setPv(morto);

		batalha.jogadoresVivos();
		assertEquals(expected, batalha.jogadoresVivos());
	}
}
